package singleton.demo10;

import java.lang.reflect.Constructor;

/**
 * 测试使用反射破坏单例模式
 */
public class Test {
    public static void main(String[] args) throws Exception {
        // 1.获取Singleton的字节码对象
        Class<Singleton> clazz = Singleton.class;

        //2.获取无参构造方法的对象
        Constructor<Singleton> cons = clazz.getDeclaredConstructor();
        //3.取消访问检查
        cons.setAccessible(true);
        //4. 创建Singleton对象
        Singleton singleton = cons.newInstance();
        Singleton singleton1 = cons.newInstance();

        //如果返回的是 true，说明并没有破坏单例模式，如果是false，说明破坏单例模式
        System.out.println(singleton == singleton1);
    }
}
